package db;

import java.util.LinkedHashMap;

public class Main {

    public static void main(String[] args) throws Exception {

        ebDB Db = ebDB.getInstance();
        Db.Connect();
        System.out.println(Db.toString());

        // Ubacuje test podatke u tabele, pogledati implementaciju
        //ebDBTestData td = new ebDBTestData();

        /* Upotreba sa slozenim upitom sa JOIN-om */
        ebDBDataSet ds = new ebDBDataSet();
        String customSQL = "SELECT D.DR_SIFRA, D.DR_NAZIV, D.NM_SIFRA, N.NM_NAZIV, R.REG_NAZIV, D.DR_SLOZENA " +
                           "FROM DRZAVE AS D " + 
                           "LEFT OUTER JOIN NASELJENA_MESTA AS N ON N.NM_SIFRA = D.NM_SIFRA " + 
                           "LEFT OUTER JOIN REGIONI AS R ON R.REG_SIFRA = N.REG_SIFRA";
        ds.setCustomSelectSQL(customSQL, "DRZAVE");
        ds.Prepare();
        ds.Open();

        System.out.print(ds.toString());
        
        LinkedHashMap<String, Object> tmp = new LinkedHashMap();
        
        /* Upotreba sa jednom tabelom */
        ds = new ebDBDataSet();
        ds.setTableName("DRZAVE");
        ds.Prepare();
        ds.Open();

        /* Filter (samo polja po kojima se filtrira) */
        tmp.clear();
        tmp.put("DR_NAZIV", "sk");
        
        ds.enableFilter(tmp);
        System.out.print(ds.toString());
        
        ds.disableFilter();

         /* Upotreba sa jednom tabelom */
        ds.setTableName("NASELJENA_MESTA");
        ds.Prepare();
        ds.Open();

        /* Filter (samo polja po kojima se filtrira) */
        tmp.clear();
        tmp.put("NM_SIFRA", null);
        tmp.put("NM_NAZIV", "a");
        tmp.put("NM_PTT_BROJ", null);
        tmp.put("DR_SIFRA", "S");
        tmp.put("REG_SIFRA", null);
        
        ds.enableFilter(tmp);
        System.out.print(ds.toString());

        ds.disableFilter();
        
        
        /* Upotreba sa jednom tabelom */
        ds = new ebDBDataSet();
        ds.setTableName("DRZAVE");
        ds.Prepare();
        ds.Open();

        System.out.print(ds.toString());

        /* Za operacije nije bitan redosled parametara */
        /* Brisanje (obavezna su samo polja primarnog kljuca) */
        tmp.clear();
        tmp.put("DR_SIFRA", "FRA");
        tmp.put("DR_NAZIV", "Francuska");
        tmp.put("NM_SIFRA", null);
        tmp.put("DR_SLOZENA", "1");
        ds.delete(tmp);

        /* Unos (obavezna su sva polja) */
        tmp.clear();
        tmp.put("DR_SIFRA", "FRA");
        tmp.put("DR_NAZIV", "Francuskaggggggg");
        tmp.put("NM_SIFRA", null);
        tmp.put("DR_SLOZENA", "1");
        ds.insert(tmp);

        /* Izmena (obavezna su sva polja) */
        tmp.clear();
        tmp.put("DR_SIFRA", "FRA");
        tmp.put("DR_NAZIV", "Francuska-Upd");
        tmp.put("DR_SLOZENA", "1");
        tmp.put("NM_SIFRA", null);
        ds.update(tmp);
    }
}
